package com.xiye.system.service.menu.impl;

import java.util.List;

import com.xiye.system.service.menu.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xiye.system.dao.DaoSupport;
import com.xiye.common.entity.Menu;
import com.xiye.common.entity.PageData;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author 西野
 * @version V1.0
 * @title MenuService.java
 * @package com.xiye.system.service.menu.impl
 * @description 菜单处理
 * @date 2018-06-22
 */
@Transactional
@Service("menuService")
@SuppressWarnings("unchecked")
public class MenuServiceImpl implements MenuService {

    @Autowired
    private DaoSupport dao;

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过ID获取其子一级菜单
     * @Param [parentId]
     * @Return java.util.List<com.xiye.common.entity.Menu>
     */
    public List<Menu> listSubMenuByParentId(String parentId)  {
        return (List<Menu>) dao.findForList("MenuMapper.listSubMenuByParentId", parentId);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过ID获取其子一级菜单
     * @Param [parentId]
     * @Return java.util.List<com.xiye.common.entity.Menu>
     */
    public List<Menu> listByParentId(String parentId)  {
        return (List<Menu>) dao.findForList("MenuMapper.listByParentId", parentId);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 通过菜单ID获取数据
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData getMenuById(PageData pd)  {
        return (PageData) dao.findForObject("MenuMapper.getMenuById", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 新增菜单
     * @Param [menu]
     * @Return void
     */
    public void saveMenu(Menu menu)  {
        dao.save("MenuMapper.insertMenu", menu);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 取最大ID
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData findMaxId(PageData pd)  {
        return (PageData) dao.findForObject("MenuMapper.findMaxId", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 删除菜单
     * @Param [MENU_ID]
     * @Return void
     */
    public void deleteMenuById(String MENU_ID)  {
        dao.save("MenuMapper.deleteMenuById", MENU_ID);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 编辑
     * @Param [menu]
     * @Return void
     */
    public void edit(PageData pd)  {
        dao.update("MenuMapper.updateMenu", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 保存菜单图标
     * @Param [pd]
     * @Return com.xiye.common.entity.PageData
     */
    public PageData editicon(PageData pd)  {
        return (PageData) dao.findForObject("MenuMapper.editicon", pd);
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 获取所有菜单并填充每个菜单的子菜单列表(菜单管理)(递归处理)
     * @Param [MENU_ID]
     * @Return java.util.List<com.xiye.common.entity.Menu>
     */
    public List<Menu> listAllMenu(String MENU_ID)  {
        List<Menu> menuList = this.listByParentId(MENU_ID);
        for (Menu menu : menuList) {
            //menu.setMENU_URL("menu/toEdit.do?MENU_ID=" + menu.getMENU_ID());
            menu.setSubMenu(this.listAllMenu(menu.getMENU_ID()));
            menu.setTarget("treeFrame");
        }
        return menuList;
    }

    /*
     * @Author 西野
     * @Date 2018-06-22 11:06:06
     * @Description 获取所有菜单并填充每个菜单的子菜单列表(系统菜单列表)(递归处理)
     * @Param [MENU_ID]
     * @Return java.util.List<com.xiye.common.entity.Menu>
     */
    public List<Menu> listAllMenuQx(String MENU_ID)  {
        List<Menu> menuList = this.listSubMenuByParentId(MENU_ID);
        for (Menu menu : menuList) {
            menu.setSubMenu(this.listAllMenuQx(menu.getMENU_ID()));
            menu.setTarget("treeFrame");
        }
        return menuList;
    }

}
